﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Doo_JetDAL;
using DoodJetView.Core.Equipement;

namespace DoodJetView.VuesPartielles
{
    /// <summary>
    /// Logique d'interaction pour EquipementForm.xaml
    /// </summary>
    public partial class EquipementForm : UserControl
    {

        public EquipementForm(MainWindow Main)//Affichage du formulaire
        {
            InitializeComponent();
            this.Main = Main;
            LoadTypesEquipements();
            List < CoutEquipement > couts = new List<CoutEquipement>();
        }
        private void UpdateEtatButton()//Rends le bouton "enregistrer" actif ou non
        {
            if (txtb_nom.Text != "" && txtb_numeroSerie.Text != "" && txtb_puissance.Text != "" && comboBox1_TypesEquipements.SelectedIndex > -1 && textBox_cout_1.Text != "" && textBox_duree_1.Text != "")
                btn_Submit.IsEnabled = true;
            else
                btn_Submit.IsEnabled = false;
        }
        private void btn_Submit_Click(object sender, RoutedEventArgs e)//Clic sur le bouton d'enregistrement
        {
            var retour = false;
            //on commence par vérifier si la puissance renseignee est bien un nombre
            try
            {
                int.Parse(txtb_puissance.Text);
            }
            catch (Exception)
            {
                lbl_puissance.Foreground = Brushes.Red;
                retour = true;
            }
            //on vérifie les couts si la puissance renseignee est bien un nombre
            try
            {
                double.Parse(textBox_duree_1.Text);
            }
            catch (Exception)
            {
                lbl_Duree_1.Foreground = Brushes.Red;
                retour = true;
            }
            if (textBox_duree_2.Text != "")
            {
                try
                {
                    double.Parse(textBox_duree_2.Text);
                }
                catch (Exception)
                {
                    lbl_Duree_2.Foreground = Brushes.Red;
                    retour = true;
                }
            }
            if (textBox_duree_3.Text != "")
            {
                try
                {
                    double.Parse(textBox_duree_3.Text);
                }
                catch (Exception)
                {
                    lbl_Duree_3.Foreground = Brushes.Red;
                    retour = true;
                }
            }
            if (textBox_duree_4.Text != "")
            {
                try
                {
                    double.Parse(textBox_duree_4.Text);
                }
                catch (Exception)
                {
                    lbl_Duree_4.Foreground = Brushes.Red;
                    retour = true;
                }
            }
            try
            {
                double.Parse(textBox_cout_1.Text);
            }
            catch (Exception)
            {
                lbl_Cout_1.Foreground = Brushes.Red;
                retour = true;
            }
            if (textBox_cout_2.Text != "")
            {
                try
                {
                    double.Parse(textBox_cout_2.Text);
                }
                catch (Exception)
                {
                    lbl_Cout_2.Foreground = Brushes.Red;
                    retour = true;
                }
            }
            if (textBox_cout_3.Text != "")
            {
                try
                {
                    double.Parse(textBox_cout_3.Text);
                }
                catch (Exception)
                {
                    lbl_Cout_3.Foreground = Brushes.Red;
                    retour = true;
                }
            }

            if (textBox_cout_4.Text != "")
            {
                try
                {
                    double.Parse(textBox_cout_4.Text);
                }
                catch (Exception)
                {
                    lbl_Cout_4.Foreground = Brushes.Red;
                    retour = true;
                }
            }
            if(retour == true){

                return;
            }
            //ensuite, on enregistre
            using (DataEntities cont = new DataEntities()) {
                //Enregistrement de l'quipement
                var idType = comboBox1_TypesEquipements.SelectedItem as TypeEquipement_Poco;
                TypeEquipement currenttype = cont.TypeEquipement.Single(o=> o.id_TypeEquipement == idType.ID);
                var equip = new equipements { NoSerie = txtb_numeroSerie.Text, nomEquipement = txtb_nom.Text, description = txtb_description.Text, puissance = Int32.Parse(txtb_puissance.Text), TypeEquipement = currenttype };
                cont.equipements.AddObject(equip);
                cont.SaveChanges();
                var fkEquip = cont.equipements.ToList().Last < equipements>().id_equipement;
                //Enregistrement de ses coûts
                if (textBox_cout_1.Text != "" && textBox_duree_1.Text != "")
                {
                    var cout = new CoutEquipement { coutHTLoc = double.Parse(textBox_cout_1.Text), duree = double.Parse(textBox_duree_1.Text), Fk_Equipement = fkEquip };
                    cont.CoutEquipement.AddObject(cout);
                    cont.SaveChanges();
                }
                if (textBox_cout_2.Text != "" && textBox_duree_2.Text != "")
                {
                    var cout = new CoutEquipement { coutHTLoc = double.Parse(textBox_cout_2.Text), duree = double.Parse(textBox_duree_2.Text), Fk_Equipement = fkEquip };
                    cont.CoutEquipement.AddObject(cout);
                    cont.SaveChanges();
                }
                if (textBox_cout_3.Text != "" && textBox_duree_3.Text != "")
                {
                    var cout = new CoutEquipement { coutHTLoc = double.Parse(textBox_cout_3.Text), duree = double.Parse(textBox_duree_3.Text), Fk_Equipement = fkEquip };
                    cont.CoutEquipement.AddObject(cout);
                    cont.SaveChanges();
                }
                if (textBox_cout_4.Text != "" && textBox_duree_4.Text != "")
                {
                    var cout = new CoutEquipement { coutHTLoc = double.Parse(textBox_cout_4.Text), duree = double.Parse(textBox_duree_4.Text), Fk_Equipement = fkEquip };
                    cont.CoutEquipement.AddObject(cout);
                    cont.SaveChanges();
                }

            }
            //puis on revient à l'écran d'affichage de la liste des équipements
            //TODO : Pas çà!!!
            this.Main.ContentGrid.Children.Clear();

        }
        private void LoadTypesEquipements()//Chargement des Types d'Equipement pour la liste déroulante 
        {
            
            using (DataEntities db = new DataEntities())
            {
                List<TypeEquipement> equipements = db.TypeEquipement.ToList();
                foreach (TypeEquipement t in equipements)
                {
                    var Poco = new TypeEquipement_Poco { ID = (int)t.id_TypeEquipement, Nom = t.libelle };
                    this.comboBox1_TypesEquipements.Items.Add(Poco);
                }

            }
        }
        private void txtb_nom_TextChanged(object sender, TextChangedEventArgs e)
        {
            UpdateEtatButton();
        }

        private void txtb_numeroSerie_TextChanged(object sender, TextChangedEventArgs e)
        {
            UpdateEtatButton();
        }

        private void txtb_puissance_TextChanged(object sender, TextChangedEventArgs e)
        {
            UpdateEtatButton();
        }

        private void listBox_TypesEquipements_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            UpdateEtatButton();
        }

        private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            UpdateEtatButton();
        }

        public MainWindow Main { get; set; }
        private void boutonAjouterCout_Click(object sender, RoutedEventArgs e)
        {
            textBox_cout_2.IsEnabled = true;
            textBox_duree_2.IsEnabled = true;
            lbl_Duree_2.IsEnabled = true;
            lbl_Cout_2.IsEnabled = true;
        }

        private void textBox_duree_1_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (textBox_cout_1.Text != "" && textBox_duree_1.Text != "")
            {
                boutonAjouterCout_1.IsEnabled = true;
            }
            else
            {
                boutonAjouterCout_1.IsEnabled = false;
            }
            UpdateEtatButton();
        }

        private void textBox_cout_1_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (textBox_cout_1.Text != "" && textBox_duree_1.Text != "")
            {
                boutonAjouterCout_1.IsEnabled = true;
            }
            else
            {
                boutonAjouterCout_1.IsEnabled = false;
            }
            UpdateEtatButton();
        }

        private void boutonAjouterCout_2_Click(object sender, RoutedEventArgs e)
        {
            textBox_cout_3.IsEnabled = true;
            textBox_duree_3.IsEnabled = true;
            lbl_Duree_3.IsEnabled = true;
            lbl_Cout_3.IsEnabled = true;
        }

        private void boutonAjouterCout_3_Click(object sender, RoutedEventArgs e)
        {
            textBox_cout_4.IsEnabled = true;
            textBox_duree_4.IsEnabled = true;
            lbl_Duree_4.IsEnabled = true;
            lbl_Cout_4.IsEnabled = true;
        }

        private void textBox_duree_2_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (textBox_cout_2.Text != "" && textBox_duree_2.Text != "")
            {
                boutonAjouterCout_2.IsEnabled = true;
            }
            else
            {
                boutonAjouterCout_2.IsEnabled = false;
            }
            UpdateEtatButton();
        }

        private void textBox_duree_3_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (textBox_cout_3.Text != "" && textBox_duree_3.Text != "")
            {
                boutonAjouterCout_3.IsEnabled = true;
            }
            else
            {
                boutonAjouterCout_3.IsEnabled = false;
            }
            UpdateEtatButton();
        }

        private void textBox_cout_2_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (textBox_cout_2.Text != "" && textBox_duree_2.Text != "")
            {
                boutonAjouterCout_2.IsEnabled = true;
            }
            else
            {
                boutonAjouterCout_2.IsEnabled = false;
            }
            UpdateEtatButton();
        }

        private void textBox_cout_3_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (textBox_cout_3.Text != "" && textBox_duree_3.Text != "")
            {
                boutonAjouterCout_3.IsEnabled = true;
            }
            else
            {
                boutonAjouterCout_3.IsEnabled = false;
            }
            UpdateEtatButton();
        }
    }
}
